const parser = require('@babel/parser');
const code1 = `a.b.c.d`;
const code2 = `a['b']['c']['d']`;

const ast1 = parser.parse(code1, { tokens: true });
const ast2 = parser.parse(code2, { tokens: true });

console.log(ast1, ast2);


// 词法分析 a.b.c.d

// Token: [
//     0: Token {type: TokenType, value: "a", …}
//     1: Token {type: TokenType {label: ".", …} }
//     2: Token {type: TokenType, value: "b", …}
//     3: Token {type: TokenType {label: ".", …} }
//     4: Token {type: TokenType, value: "c", …}
//     5: Token {type: TokenType {label: ".", …} }
//     6: Token {type: TokenType, value: "d", …}
//     7: Token {type: TokenType {label: "eof", …} }
//   ]


// a['b']['c']['d']
// Token: [
//     0: Token {type: TokenType, value: "a", …}
//     1: Token {type: TokenType {label: "[", …} }
//     2: Token {type: TokenType, value: "b", …}
//     3: Token {type: TokenType {label: "]", …} }
//     4: Token {type: TokenType {label: "[", …} }
//     5: Token {type: TokenType, value: "c", …}
//     6: Token {type: TokenType {label: "]", …} }
//     7: Token {type: TokenType {label: "[", …} }
//     8: Token {type: TokenType, value: "d", …}
//     9: Token {type: TokenType {label: "]", …} }
//     10: Token {type: TokenType {label: "eof", …} }
//   ]